package CapaDatos;

import CapaDatos.listas.ListaFechas;
import java.util.List;

public class Habitacion
{
    private ListaFechas fechasReservadas;
    private String ID;
    private String tipo;
    private String estado;
    private int superficie;
    private int capacidad;
    private int vecesReservada;

    public Habitacion (String ID, String tipo, String estado, int superficie, int capacidad, int vecesReservada, List fechas)
    {
        this.ID         = ID;
        this.tipo       = tipo;
        this.estado     = estado;
        this.superficie = superficie;
        this.capacidad  = capacidad;
        this.vecesReservada = vecesReservada;
        this.fechasReservadas = new ListaFechas (fechas);
    }

    public Habitacion (String tipo, String estado, int superficie, int capacidad)
    {
        this.tipo       = tipo;
        this.estado     = estado;
        this.superficie = superficie;
        this.capacidad  = capacidad;
        this.vecesReservada = 0;
    }

    // <editor-fold defaultstate="collapsed" desc="Getters y Setters">
    public String getID() {
        return ID;
    }

    public void setID (String ID) {
        this.ID = ID;
    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public int getCapacidad() {
        return capacidad;
    }

    public void setCapacidad (int capacidad) {
        this.capacidad = capacidad;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado (String estado) {
        this.estado = estado;
    }

    public int getSuperficie() {
        return superficie;
    }

    public void setSuperficie (int superficie) {
        this.superficie = superficie;
    }

    public Fecha[] getFechasReservadas() {
        return fechasReservadas.array();
    }

    public void setFechasReservadas(ListaFechas fechasReservadas) {
        this.fechasReservadas = fechasReservadas;
    }

    public int getVecesReservada() {
        return vecesReservada;
    }

    public void setVecesReservada(int vecesReservada) {
        this.vecesReservada = vecesReservada;
    }


    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="estaReservada">
    public boolean estaReservada (String inicio, String fin) {
        Fecha fechaIni = new Fecha (inicio);
        Fecha fechaFin = new Fecha (fin);

        while (!fechaIni.equals(fechaFin))
        {
            if (fechasReservadas.existe(fechaIni.toString()))
                return true;

            fechaIni.add(Fecha.DATE, 1);
        }

        return false;
    }
    //</editor-fold>

    // <editor-fold defaultstate="collapsed" desc="equals, hashCode y toString">
    @Override
    public boolean equals(Object objeto) {
        Habitacion objetoHabitacion;

        if (!(objeto instanceof Habitacion))
            return false;

        objetoHabitacion = (Habitacion) objeto;


        if (this.ID.equals(objetoHabitacion.getID()))
            return true;

        return false;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (ID != null ? ID.hashCode() : 0);

        return hash;
    }

    @Override
    public String toString() {
        return (this.ID + ":" + this.estado + ":" + this.superficie + ":" + this.capacidad);
    }
    // </editor-fold>
}
